﻿Public Class Consultar_Orden_de_Compra
    Dim acceso As New acceso
    Dim estadoTabla As String
    Private Sub Consultar_Orden_de_Compra_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        cargarGrilla("todas")
        estadoTabla = "todas"
    End Sub

    Private Sub cargarGrilla(ByVal todasOgeneradas As String)
        Dim tabla As New Data.DataTable()
        If todasOgeneradas = "todas" Then
            tabla = acceso.leo_tabla("Vista_Orden_Compra")
        Else
            tabla = acceso.leo_tabla("Vista_Orden_Compra Where idEstado = 1")
        End If
        DGV_orden_compra.DataSource = tabla
        acomodarGrilla()
    End Sub
    Private Sub acomodarGrilla()
        DGV_orden_compra.Columns("nroOrdenCompra").HeaderText = "Nro Orden Compra"
        DGV_orden_compra.Columns("nroOrdenCompra").Width = 50
        DGV_orden_compra.Columns("Subtotal").Width = 40
        DGV_orden_compra.Columns("razonSocial").Width = 170
        DGV_orden_compra.Columns("razonSocial").HeaderText = "Proveedor"
        DGV_orden_compra.Columns("fechaCreacion").HeaderText = "Fecha Orden"
        DGV_orden_compra.Columns("fechaNecesidad").HeaderText = "Fecha Necesidad"
        DGV_orden_compra.Columns("estado").HeaderText = "Estado"
        DGV_orden_compra.Columns("Subtotal").HeaderText = "Total"
        DGV_orden_compra.Columns("nroProveedor").Visible = False
        DGV_orden_compra.Columns("idEstado").Visible = False
    End Sub
    Public Sub recargar()
        cargarGrilla(estadoTabla)
        DGV_orden_compra.ClearSelection()
        DGV_detalle_orden.DataSource = ""
    End Sub
    Private Sub btn_nuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_nuevo.Click
        Dim nuevaOrden As New Orden_de_Compras()
        nuevaOrden.ShowDialog()
        recargar()
    End Sub

    Private Sub DGV_orden_compra_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DGV_orden_compra.Click
        If DGV_orden_compra.SelectedRows.Count <> 0 Then
            cargarGrillaDetalle()
        End If
    End Sub
    Private Sub cargarGrillaDetalle()
        Dim tabla As New Data.DataTable()
        tabla = acceso.leo_tabla("Vista_Detalle_Orden_Compra WHERE nroOrden = " & DGV_orden_compra.CurrentRow.Cells("nroOrdenCompra").Value)
        DGV_detalle_orden.DataSource = tabla
        acomodarGrillaDetalle()
    End Sub
    Private Sub acomodarGrillaDetalle()
        DGV_detalle_orden.Columns("unidad").HeaderText = "Unidad"
        DGV_detalle_orden.Columns("nombre").HeaderText = "Producto"
        DGV_detalle_orden.Columns("cantidad").HeaderText = "Cantidad"
        DGV_detalle_orden.Columns("precio").HeaderText = "Precio"
        DGV_detalle_orden.Columns("nombre").Width = 180
        DGV_detalle_orden.Columns("nroProveedor").Visible = False
        DGV_detalle_orden.Columns("razonSocial").Visible = False
        DGV_detalle_orden.Columns("codProducto").Visible = False
        DGV_detalle_orden.Columns("nroOrden").Visible = False
    End Sub

    Private Sub btn_eliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_eliminar.Click
        If DGV_orden_compra.SelectedRows.Count <> 0 Then
            If DGV_orden_compra.CurrentRow.Cells("idEstado").Value = 1 Then
                If MessageBox.Show("Esta seguro que desea cancelar la orden: " & DGV_orden_compra.CurrentRow.Cells("nroOrdenCompra").Value, "ATENCION", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
                    Dim comando As New SqlClient.SqlCommand
                    comando.Parameters.AddWithValue("@nroOrden", DGV_orden_compra.CurrentRow.Cells("nroOrdenCompra").Value)
                    acceso.ejecutarActualizaciones("Update OrdenCompra set idEstado = 3 WHERE nroOrdenCompra = @nroOrden", comando)
                    MessageBox.Show("Orden de compra cancelada")
                    recargar()
                End If
            End If
        End If
    End Sub

    Private Sub btn_finalizar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_finalizar.Click
        If DGV_orden_compra.SelectedRows.Count <> 0 Then
            If DGV_orden_compra.CurrentRow.Cells("idEstado").Value = 1 Then
                If MessageBox.Show("Desea finalizar la orden: " & DGV_orden_compra.CurrentRow.Cells("nroOrdenCompra").Value & " del proveedor: " & DGV_orden_compra.CurrentRow.Cells("razonSocial").Value, "ATENCION", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
                    Dim conexion As New SqlClient.SqlConnection
                    Dim tran As SqlClient.SqlTransaction
                    Dim comando As New SqlClient.SqlCommand
                    Dim cad As New CadenaDeConexion()
                    Try
                        conexion.ConnectionString = cad._cadena
                        conexion.Open()
                        comando.Connection = conexion
                        comando.CommandType = CommandType.Text
                        tran = conexion.BeginTransaction()
                        comando.Transaction = tran
                        comando.Parameters.AddWithValue("@nroOrden", DGV_orden_compra.CurrentRow.Cells("nroOrdenCompra").Value)
                        comando.CommandText = "Update OrdenCompra set idEstado = 2 WHERE nroOrdenCompra = @nroOrden"
                        comando.ExecuteNonQuery()
                        For i As Integer = 0 To DGV_detalle_orden.RowCount - 1 Step 1
                            comando.Parameters.Clear()
                            comando.CommandText = "Update Producto set stockActual = stockActual + @cant, stockDisponible = stockDisponible + @cant where codProducto = @idP"
                            comando.Parameters.AddWithValue("@cant", DGV_detalle_orden.Rows(i).Cells("cantidad").Value)
                            comando.Parameters.AddWithValue("@idP", DGV_detalle_orden.Rows(i).Cells("codProducto").Value)
                            comando.ExecuteNonQuery()
                        Next
                        tran.Commit()
                        MessageBox.Show("Orden de compra Finalizada")
                        recargar()
                    Catch ex As Exception
                        tran.Rollback()
                        conexion.Close()
                    End Try

                End If
            End If
        End If
    End Sub

    Private Sub btn_modificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_modificar.Click
        If DGV_orden_compra.SelectedRows.Count <> 0 Then
            If DGV_orden_compra.CurrentRow.Cells("idEstado").Value = 1 Then
                Dim ordenDeCompraModificar As New Orden_de_Compras_Modificar()
                Dim orden As New OrdenCompra()
                orden._nroOrden = DGV_orden_compra.CurrentRow.Cells("nroOrdenCompra").Value
                orden._fechaCreacion = DGV_orden_compra.CurrentRow.Cells("fechaCreacion").Value
                orden._fecheNecesidad = DGV_orden_compra.CurrentRow.Cells("fechaNecesidad").Value
                ordenDeCompraModificar._orden = orden
                Dim prov As New Proveedor()
                prov._idProveedor = DGV_orden_compra.CurrentRow.Cells("nroProveedor").Value
                prov._razonSocial = DGV_orden_compra.CurrentRow.Cells("razonSocial").Value
                ordenDeCompraModificar._prov = prov
                ordenDeCompraModificar.ShowDialog()
                recargar()
            End If
        End If
    End Sub

    Private Sub btn_Todas_Ordenes_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Todas_Ordenes.Click
        estadoTabla = "todas"
        recargar()
    End Sub

    Private Sub btn_Ordenes_Generadas_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Ordenes_Generadas.Click
        estadoTabla = "generadas"
        recargar()
    End Sub

    Private Sub btn_salir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_salir.Click
        If MessageBox.Show("¿ Desea salir de la Consulta de Ordenes de Compra ?", "Atención", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
            Me.Close()
        End If
    End Sub
End Class